//@author A0096723X
//@class BotException
//@Description This class is the exception class of the BOT program.
//			1. returns a char* signifying what kind of exceptions are thrown.
#ifndef BOTEXCEPTION_H
#define BOTEXCEPTION_H
#include <exception>
#include <string>
using namespace std;
class BotException :
	public exception
{
public:
	enum EXCEPTION_TYPE {
		EXCEPTION_INVALID_INDEX,
		EXCEPTION_FORMAT_INVALID,
		EXCEPTION_DATE_INVALID,
		EXCEPTION_TIME_INVALID,
		EXCEPTION_ATTRIBUTE_INVALID,
		EXCEPTION_UNDO_INVALID,
		EXCEPTION_REDO_INVALID,
		EXCEPTION_COMMAND_INVALID,
		EXCEPTION_NAME_INVALID,
		EXCEPTION_START_END_CONFLICT
	};
	static const char* STRING_INVALID_INDEX;
	static const char* STRING_INVALID_EMPTY;
	static const char* STRING_INVALID_FORMAT;
	static const char* STRING_INVALID_DATE;
	static const char* STRING_INVALID_TIME;
	static const char* STRING_INVALID_ATTRIBUTE;
	static const char* STRING_INVALID_UNDO;
	static const char* STRING_INVALID_REDO;
	static const char* STRING_INVALID_COMMAND;
	static const char* STRING_INVALID_NAME;
	static const char* STRING_INVALID_START_AFTER_END;
	static const char* STRING_INVALID_UNKNOWN;
	BotException(EXCEPTION_TYPE);
	~BotException(void);
private:
	EXCEPTION_TYPE _exceptionType;
public:
	virtual const char* what() const throw();

};

#endif